package com.smedi.ismedi.progress.core.application.query;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.smedi.ismedi.progress.api.dto.response.ProgressReportMonthDetailAllResponse;
import com.smedi.ismedi.progress.api.dto.response.ProgressReportWeekDetailAllResponse;
import com.smedi.ismedi.progress.core.application.command.ProgressReportExportQuery;
import com.smedi.ismedi.progress.core.application.command.ProgressReportListQuery;
import com.smedi.ismedi.progress.core.application.command.ProgressReportOneQuery;
import com.smedi.ismedi.progress.core.application.command.ProgressWeekMonthReportCommand;
import com.smedi.ismedi.progress.core.domain.aggregatemodel.*;

import java.util.List;

/**
 * 进度管理应用服务接口
 *
 * @author pengyan
 * @date 2022/09/19
 */
public interface ProgressReportQueryService {

    ProgressReport getProgressWeekReportOne(ProgressReportOneQuery build);

    /**
     * 获取进度周报列表
     * @param progressReportListQueryList
     * @return java.util.List<com.smedi.ismedi.progress.core.domain.aggregatemodel.ProgressReport>
     * @throws
     * @date 2022/9/28 13:57
     */
    Page<ProgressReport> getProgressWeekReportList(ProgressReportListQuery progressReportListQueryList);

    /**
     * 获取进度月报列表
    * @param progressReportListQuery
    * @return java.util.List<com.smedi.ismedi.progress.core.domain.aggregatemodel.ProgressReport>
    * @throws
    * @date 2022/9/28 15:56
    */
    Page<ProgressReport> getProgressMonthReportList(ProgressReportListQuery progressReportListQuery);


    /**
    * 进度月报详情
    * @param progressReportExportQuery
    * @return com.smedi.ismedi.progress.api.dto.response.ProgressReportDetailAllResponse
    * @date 2022/9/29 14:26
    */
    ProgressReportMonthDetailAllResponse getProgressMonthReportDetail(ProgressReportExportQuery progressReportExportQuery);

    /**
    * 周月报导出
    * @param progressReportExportQuery
    * @return java.util.List<com.smedi.ismedi.progress.api.dto.response.ProgressReportMonthDetailAllResponse>
    * @date 2022/10/19 17:47
    */
    List<ProgressReportMonthDetailAllResponse> getProgressMonthReportDetailBatch(ProgressReportExportQuery progressReportExportQuery);



    /**
     * 进度周报详情
     * @param progressReportExportQuery
     * @return com.smedi.ismedi.progress.api.dto.response.ProgressReportDetailAllResponse
     * @date 2022/9/29 14:26
     */
    ProgressReportWeekDetailAllResponse getProgressWeekReportDetail(ProgressReportExportQuery progressReportExportQuery);

    WeekMonthReportEidt monthWeekReportEidtDetail(ProgressWeekMonthReportCommand progressWeekMonthReportCommand);


    /**
     * 生成总结
     * @param weekMonthReportType
     * @return
     */
    String monthWeekReportCreateSum(WeekMonthReportType weekMonthReportType);

    /**
     * 进度月报新增
     * @param monthReportCreate
     * @return
     */
    String monthReportCreate(MonthReportCreate monthReportCreate);

    /**
     * 周报新增
     * @return
     * @param date
     */
    Boolean weekReportCreate(String date);

    /**
     * 定时任务 添加未单月未生成的月报
     * @return
     */
    Boolean monthReportCreateTask();

    /**
    * APP 进度周月报查询
    * @param progressReportListQuery
    * @return com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.smedi.ismedi.progress.core.domain.aggregatemodel.ProgressReport>
    * @date 2022/11/4 9:37
    */
    Page<ProgressReport> getProgressWeekMonthReportListApp(ProgressReportListQuery progressReportListQuery);

    /**
     * 进度计划周、月报任务列表
     * @param progressWeekMonthReportCommand
     * @return
     */
    List<ProjectScheduleDetail> getProjectScheduleDetailTaskList(ProgressWeekMonthReportCommand progressWeekMonthReportCommand);
}
